﻿/*
 * Copyright 2011 Hanns Kucer
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
using System;
using System.Collections.Generic;
using System.Threading;
using System.Text;

namespace iTachToolkit
{

    class Recorder
    {
        private Thread worker;
        private MonitoredThreadSafeQueue<Transmission> q;

        public Recorder()
        {
            q = new MonitoredThreadSafeQueue<Transmission>();
        }

        public void Record(Transmission trx)
        {
            q.Enqueue(trx);
        }

        public void Start()
        {
            worker = new Thread(_worker);
            worker.Start();
        }

        public void Stop()
        {
            q.Enqueue(null);
            worker.Join();
        }

        void _worker()
        {
			Thread.CurrentThread.Name = GetType().Name;

            while (true)
            {
                Transmission trx = q.Dequeue();
                if (trx == null) break; // terminate thread

				// TODO: Record transmissions to an XML file
				System.Diagnostics.Debug.WriteLine(trx.Request.Data);
            }
        }
    }
}
